package ace.module.account.core.impl.manager;

import ace.module.account.api.model.dto.IamApplicationDto;
import ace.module.account.core.impl.dao.entity.IamApplication;
import ace.module.common.core.impl.manager.ApplicationManager;

/**
 * @author caspar
 * @date 2023/3/20 9:28
 */
public interface IamApplicationManager extends ApplicationManager<IamApplication, Long, IamApplicationDto> {

  IamApplication getAndCheckById(Long id);

  IamApplication getAndCheckByKey(String key);

  IamApplication getAndCheckByOutTypeAndOutId(String outType, String outId);

  IamApplication getByOutTypeAndOutId(String outType, String outId);

  IamApplicationDto getDtoByOutTypeAndOutId(String outType, String outId);

  IamApplicationDto getAndCheckDtoByOutTypeAndOutId(String outType, String outId);

  IamApplication getAdminIamApplication();

  IamApplication getAndCheckByNotNullAllAdminIamApplicationAndDeleteFlagIsFalse();
}
